﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using BusinessLogicLayer;
using Equin.ApplicationFramework;

namespace PresentationLayer
{
    public partial class CapNhatHoSoForm : Form
    {
        public CapNhatHoSoForm()
        {
            InitializeComponent();
        }
        public HoSoUngVien HoSo { get; set; }
        public CapNhatDSHS CapNhatDS { get; set; }

        private void CapNhatHoSoForm_Load(object sender, EventArgs e)
        {
            dgvDuAnCu.AutoGenerateColumns = false;
            dgvDuAnCu.ForeColor = Color.Black;
            dgvDuAnCu.DataSource = new BindingListView<DuAnQuaKhu>(new List<DuAnQuaKhu>());
            dtiNgaySinh.Value = DateTime.Now;
            if (HoSo.MaHoSo > 0)
            {
                this.btnThem.Text = "Sửa hồ sơ";
                DienThongTinSua();
            }
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            if (KiemTraDaNhap())
            {
                if (HoSo.MaHoSo > 0)
                {
                    HoSoUngVien hsSua = this.GetHoSo();
                    hsSua.MaHoSo = HoSo.MaHoSo;
                    var ar = new HoSoUngVienManager().Sua(hsSua);
                    if (ar.Success)
                    {
                        MessageBox.Show("Cập nhật hồ sơ thành công", "Thông  báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else MessageBox.Show("Xảy ra lỗi!\n\nChi tiết: " + ar.Exceptions[ar.Exceptions.Count - 1].Message, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    HoSoUngVien hsThem = this.GetHoSo();
                    hsThem.TrangThai = TrangThaiHoSo.CHOXETDUYET;
                    hsThem.NgayNop = DateTime.Now.Date;
                    var ar = new HoSoUngVienManager().Them(hsThem);
                    if (ar.Success)
                    {
                        List<DuAnQuaKhu> list = (dgvDuAnCu.DataSource as BindingListView<DuAnQuaKhu>).DataSource as List<DuAnQuaKhu>;
                        foreach (var item in list)
                        {
                            item.MaHoSo = hsThem.MaHoSo;
                            new DuAnQKManager().CapNhat(item);
                        }
                        CapNhatDS(LoaiHanhDong.Them, new HoSoUngVienManager().LayHSTheoMa(hsThem.MaHoSo));
                        MessageBox.Show("Thêm hồ sơ thành công", "Thông  báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        ResetForm();
                    }
                    else MessageBox.Show("Xảy ra lỗi!\n\nChi tiết: " + ar.Exceptions[ar.Exceptions.Count - 1].Message, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            if (HoSo.MaHoSo < 1)
            {
                List<DuAnQuaKhu> list = (dgvDuAnCu.DataSource as BindingListView<DuAnQuaKhu>).DataSource as List<DuAnQuaKhu>;
                foreach (var item in list)
                {
                    new DuAnQKManager().Xoa(item.MaDAQK);
                }
            }
            this.Close();
        }

        private void btnThemDA_Click(object sender, EventArgs e)
        {
            if (txtTenDA.Text.Trim() == "")
                MessageBox.Show("Chưa nhập tên dự án!!!", "Thông  báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            else
            {
                DuAnQuaKhu da = new DuAnQuaKhu() { TenDuAn = txtTenDA.Text };
                if (HoSo.MaHoSo > 0)
                    da.MaHoSo = HoSo.MaHoSo;
                var ar = new DuAnQKManager().Them(da);
                if (ar.Success)
                {
                    List<DuAnQuaKhu> list = (dgvDuAnCu.DataSource as BindingListView<DuAnQuaKhu>).DataSource as List<DuAnQuaKhu>;
                    list.Add(da);
                    dgvDuAnCu.DataSource = new BindingListView<DuAnQuaKhu>(list);
                    txtTenDA.Text = "";
                }
                else MessageBox.Show("Xảy ra lỗi!\n\nChi tiết: " + ar.Exceptions[ar.Exceptions.Count - 1].Message, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnXoaDuAn_Click(object sender, EventArgs e)
        {
            if (dgvDuAnCu.CurrentRow != null)
            {
                List<DuAnQuaKhu> list = (dgvDuAnCu.DataSource as BindingListView<DuAnQuaKhu>).DataSource as List<DuAnQuaKhu>;
                var ar = new DuAnQKManager().Xoa(int.Parse(dgvDuAnCu.CurrentRow.Cells[0].Value.ToString()));
                if (ar.Success)
                {
                    list.RemoveAt(list.FindIndex(d => d.MaDAQK == int.Parse(dgvDuAnCu.CurrentRow.Cells[0].Value.ToString())));
                    dgvDuAnCu.DataSource = new BindingListView<DuAnQuaKhu>(list);
                }
                else MessageBox.Show("Xảy ra lỗi!\n\nChi tiết: " + ar.Exceptions[ar.Exceptions.Count - 1].Message, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); 
            }
            else MessageBox.Show("Chưa chọn dự án!!!", "Thông  báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }

        private HoSoUngVien GetHoSo()
        {
            HoSoUngVien hs = new HoSoUngVien();
            hs.HoUngVien = this.txtHoUV.Text;
            hs.TenUngVien = this.txtTenUV.Text;
            hs.CMND = this.txtCMND.Text;
            hs.DiaChi = this.txtDiaChi.Text;
            hs.GioiTinh = this.chkGT.Checked;
            hs.NgaySinh = this.dtiNgaySinh.Value;
            hs.Email = this.txtEmail.Text;
            hs.SoDienThoai = this.mtxtSDT.Text;
            hs.TrinhDoHocVan = this.txtTDHV.Text;
            hs.KinhNghiem = this.txtKinhNghiem.Text;
            hs.KyNangNgoaiNgu = this.txtKNNN.Text;
            hs.KyNangChuyenMon = this.txtKNCM.Text;
            hs.ViTriMongMuon = this.txtVTMongMuon.Text;
            return hs;
        }

        private bool KiemTraDaNhap()
        {
            List<String> valid = new List<string>();
            if (txtHoUV.Text.Trim() == "")
                valid.Add("Chưa nhập họ ứng viên!!!");
            if (txtTenUV.Text.Trim() == "")
                valid.Add("Chưa nhập tên ứng viên!!!");
            if (txtCMND.Text.Trim() == "")
                valid.Add("Chưa nhập số chứng minh thư!!!");
            if (txtDiaChi.Text.Trim() == "")
                valid.Add("Chưa nhập địa chỉ!!!");
            if (txtEmail.Text.Trim() == "")
                valid.Add("Chưa nhập Email!!!");
            if (mtxtSDT.Text.Trim() == "")
                valid.Add("Chưa nhập số điện thoại!!!");
            if (txtTDHV.Text.Trim() == "")
                valid.Add("Chưa nhập trình độ học vấn!!!");
            if (txtVTMongMuon.Text.Trim() == "")
                valid.Add("Chưa nhập vị trí mong muốn!!!");
            string s = "";
            foreach (var item in valid)
                s += item + "\n";
            if (valid.Count > 0)
            {
                MessageBox.Show(s, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            return true;
        }

        private List<DuAnQuaKhu> LayDSDA()
        {
            List<DuAnQuaKhu> DuAn = new List<DuAnQuaKhu>();
            if (HoSo.MaHoSo > 0)
            {
                var ar = new DuAnQKManager().LayDSTheoMaHS(HoSo.MaHoSo);
                if (ar.Success)
                    DuAn = ar.ObjectList;
                else MessageBox.Show("Xảy ra lỗi!\n\nChi tiết: " + ar.Exceptions[ar.Exceptions.Count - 1].Message, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            return DuAn;
        }

        private void DienThongTinSua()
        {
            this.txtHoUV.Text = HoSo.HoUngVien;
            this.txtTenUV.Text = HoSo.TenUngVien;
            this.txtCMND.Text = HoSo.CMND;
            this.txtDiaChi.Text = HoSo.DiaChi;
            this.chkGT.Checked = HoSo.GioiTinh;
            this.dtiNgaySinh.Value = HoSo.NgaySinh;
            this.txtEmail.Text = HoSo.Email;
            this.mtxtSDT.Text = HoSo.SoDienThoai;
            this.txtTDHV.Text = HoSo.TrinhDoHocVan;
            this.txtKinhNghiem.Text = HoSo.KinhNghiem;
            this.txtKNNN.Text = HoSo.KyNangNgoaiNgu;
            this.txtKNCM.Text = HoSo.KyNangChuyenMon;
            this.txtVTMongMuon.Text = HoSo.ViTriMongMuon;
            dgvDuAnCu.DataSource = new BindingListView<DuAnQuaKhu>(LayDSDA());
        }

        private void ResetForm()
        {
            this.txtHoUV.Text = "";
            this.txtTenUV.Text = "";
            this.txtCMND.Text = "";
            this.txtDiaChi.Text = "";
            this.txtEmail.Text = "";
            this.mtxtSDT.Text = "";
            this.txtTDHV.Text = "";
            this.txtKinhNghiem.Text = "";
            this.txtKNNN.Text = "";
            this.txtKNCM.Text = "";
            this.txtVTMongMuon.Text = "";
            dgvDuAnCu.DataSource = new BindingListView<DuAnQuaKhu>(new List<DuAnQuaKhu>());
        }

        private void btnClear_Click(object sender, EventArgs e)
        {
            ResetForm();
        }

        private void CapNhatHoSoForm_FormClosed(object sender, FormClosedEventArgs e)
        {
            if (HoSo.MaHoSo > 0)
                this.CapNhatDS(LoaiHanhDong.CapNhat, new HoSoUngVienManager().LayHSTheoMa(HoSo.MaHoSo));
        }
    }
}
